Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>WebUSB</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/WebUSB"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-WebUSB rootpage-WebUSB skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">WebUSB</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p><b>WebUSB</b> is a <a href="JavaScript" title="JavaScript">JavaScript</a> <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">application programming interface</a> (API) specification<sup id="cite_ref-github-webusb_1-0" class="reference"><a href="#cite_note-github-webusb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> for securely providing access to <a href="USB" title="USB">USB</a> devices from <a href="Web_application" title="Web application">web applications</a>.<sup id="cite_ref-Google-webusb2016_2-0" class="reference"><a href="#cite_note-Google-webusb2016-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>It was published by the Web Platform Incubator Community Group. As of July 2021, it is in Draft Community status, and is supported<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> by <a href="Chromium_(web_browser)" title="Chromium (web browser)">Chromium</a>-based browsers.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Introduction">Introduction</h2></div>
<p>A Universal Serial Bus, or a <a href="USB" title="USB">USB</a> is an industry standard communication protocol used to communicate data across connectors, and cables from computers to peripheral devices and/or other computers.<sup id="cite_ref-Anderson-Universal_4-0" class="reference"><a href="#cite_note-Anderson-Universal-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> WebUSB is a set of API calls that enable access to these hardware devices from web pages. WebUSB is developed by the World Wide Web Consortium (W3C).<sup id="cite_ref-github-webusb_1-1" class="reference"><a href="#cite_note-github-webusb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> The WebUSB API provides a safe, and developer familiar means of communication to edge devices from web pages. The WebUSB API integrates into existing USB libraries and shortens the development cycle for integrating new devices into the web environment by not needing to wait for browser support for these devices.
</p><p>Early versions of WebUSB came out around as an alternative to <a href="Adobe_Flash" title="Adobe Flash">Flash</a>, Chrome Serial, and other custom approaches to connecting browsers to hardware. WebUSB aims to solve the four goals of any interface being; fast to make, cross platform, look good, accessibility.<sup id="cite_ref-CSSSConf-Aus_5-0" class="reference"><a href="#cite_note-CSSSConf-Aus-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Application_to_Internet_of_Things_(IoT)_architecture">Application to Internet of Things (IoT) architecture</h2></div>
<p>WebUSB API's are able to bridge hardware protocols to internet protocols, enabling the creating of uniform gateways linking edge devices to a centralised networks.<sup id="cite_ref-King-Saud-IoT_6-0" class="reference"><a href="#cite_note-King-Saud-IoT-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p><p>The explosion in computing ability over the last few decades has led to an increase in edge devices. Devices such as lights, <a href="Thermometers" class="mw-redirect" title="Thermometers">thermometers</a>, <a href="HVAC" class="mw-redirect" title="HVAC">HVAC</a>, motors are increasingly integrated into centralised internet control servers.<sup id="cite_ref-Rondon-Babun_7-0" class="reference"><a href="#cite_note-Rondon-Babun-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> These devices have evolved from isolated and previously non-integrated development environments. Consequently, they lack the uniform and consistent communication protocol necessary to develop an immediate connectivity to a web service. The WebUSB's API framework standardises disparate protocols and is able to expose non-standard Universal Serial Bus (USB) compatible devices to the web.<sup id="cite_ref-Moz-Web-API_8-0" class="reference"><a href="#cite_note-Moz-Web-API-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p><p>The WebUSB looks to sit between the perception layer and the network layer.<sup id="cite_ref-King-Saud-IoT_6-1" class="reference"><a href="#cite_note-King-Saud-IoT-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> The main goals of software in this gateway are; Scalability, Cost and reliability. The cloud-based deployment of WebUSB libraries enables it to cover scalability, its low overhead deployment significantly lowers cost, and its continual in use development over its lifetime has enabled the framework to attain a high degree of reliability.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p><p>WebUSB has formed a cornerstone of the BIPES (Block based Integrated Platform for Embedded Systems) architecture framework. This systems architecture model aims to reduce complexity of IoT systems development by aggregating relevant software into 'Blocks' that are complete units of code and can be deployed to an edge device from a centralised cloud infrastructure.<sup id="cite_ref-BIPES-IEEE_10-0" class="reference"><a href="#cite_note-BIPES-IEEE-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> As already mentioned the role of WebUSB is critically tied to its ability to communicate to embedded software through the USB communication protocol. Once the information is inside WebUSB's JavaScript environment it can be transposed and communicated through a variety of software protocols.<sup id="cite_ref-github-webusb_1-2" class="reference"><a href="#cite_note-github-webusb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> In this particular architecture model WebUSB bridges the gap between <a href="Embedded_software" title="Embedded software">embedded software</a>, and the <a href="Web_browser" title="Web browser">web browser</a>. The web browser then communicates to the cloud environment using uniform WebUSB constructed data.<sup id="cite_ref-BIPES-IEEE_10-1" class="reference"><a href="#cite_note-BIPES-IEEE-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Security_considerations">Security considerations</h2></div>
<p>WebUSB provides a web page access to a connector to an edge device. The exposure of any device to the internet carries inherent risks and security concerns.<sup id="cite_ref-Rondon-Babun_7-1" class="reference"><a href="#cite_note-Rondon-Babun-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> By product of design USB ports are designed to trust the device they are connected to. Connecting such a port to an internet facing application introduced a new set of security risks and massively expanding the attack surface for would be malicious actors.<sup id="cite_ref-Moz-Web-API_8-1" class="reference"><a href="#cite_note-Moz-Web-API-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-github-webusb_1-3" class="reference"><a href="#cite_note-github-webusb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>For instance a malicious host web page could request data from a peripheral device, which the device would happily fulfil thinking it was communicating through a standard USB connector. To mitigate this type of attack WebUSB developed a <code>requestDevice()</code> function call. This would notify the user that the site was requesting access to the edge device. This is similar to the access requests browser control for when a web page would like to access the inbuilt camera or microphone. Depending on the wariness of the user this protocol can be enough to prevent certain attacks. A second protocol that was developed is the specification of a request originating from a secure context.<sup id="cite_ref-Enabling_Smart_11-0" class="reference"><a href="#cite_note-Enabling_Smart-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-github-webusb_1-4" class="reference"><a href="#cite_note-github-webusb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> This ensures that both the code to be executed and the data returned is not intercepted or modified in transit. This security is implemented through the claimInterface() function. This is an OS supported function, and ensures that only a single execution instance can have user space or kernel space driver access to the device, preventing malicious code on a web page from opening a second channel of communication to the device.<sup id="cite_ref-github-webusb_1-5" class="reference"><a href="#cite_note-github-webusb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Other security considerations included created a public registry of approved connections, but this idea was ultimately scrapped as it required vendors to develop devices with WebUSB in mind.<sup id="cite_ref-github-webusb_1-6" class="reference"><a href="#cite_note-github-webusb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>The threat surface of a USB however is bi-directional and a malicious peripheral device could attack the host. An infected edge device cannot easily be mitigated by WebUSB API's. In many device configurations trusted USB ports are used to deliver firmware upgrades and a malicious edge device could grant attackers persistence in a system.<sup id="cite_ref-Enabling_Smart_11-1" class="reference"><a href="#cite_note-Enabling_Smart-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Anderson-Universal_4-1" class="reference"><a href="#cite_note-Anderson-Universal-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p><p>In light of the security concerns posed by WebUSB, it is only supported by an estimated 76% of browsers. Also notably is that support for WebUSB at a browser level has been volatile over time, with stretches of time where certain browsers turned off access after the discovery of particular security threats.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> It is these security concerns that have plagued alternatives to WebUSB. Particularly Flash and Google Serial failed to take off because they were unable to be used with adequate answers to these fundamental security risks.<sup id="cite_ref-CSSSConf-Aus_5-1" class="reference"><a href="#cite_note-CSSSConf-Aus-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Use_in_multi-factor_authentication">Use in multi-factor authentication</h2></div>
<p>The ability to own and verify a digital identity on the internet is critical to interaction with internet facing infrastructure. WebUSB in combination with special purpose devices and public identification registries can be used as key piece in an infrastructure scale solution to digital identity on the internet.<sup id="cite_ref-Fujita-Inomata_13-0" class="reference"><a href="#cite_note-Fujita-Inomata-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> WebUSB API library is able to standardise the connection of peripheral devices to web pages. The security investment in WebUSB makes it a suitable software component in connecting identifiable devices to the internet.<sup id="cite_ref-github-webusb_1-7" class="reference"><a href="#cite_note-github-webusb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Recent research has shown the fallibility of SMS based authentication highlighting how key pieces of the infrastructure can be subverted.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> Alternative proposals for securing a digital identity involve the use of biometric sensors and/or personal identifiers. However, while these are good at identifying an individual, it is only through WebUSB that they can adequately be integrated into the existing internet tech stack.<sup id="cite_ref-Fujita-Inomata_13-1" class="reference"><a href="#cite_note-Fujita-Inomata-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> Cryptographically secure solutions for personal identification exist with support from government and specialised hardware. However, these solutions lack generalised specification for web based infrastructure and are generally hard to support. Gateway support for such a communication protocol can be supported by software middlemen, such as WebUSB.<sup id="cite_ref-BIPES-IEEE_10-2" class="reference"><a href="#cite_note-BIPES-IEEE-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Fujita-Inomata_13-2" class="reference"><a href="#cite_note-Fujita-Inomata-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>
</p><p>A model system for multi-factor authentication uses WebUSB in tandem with an identifying hardware such as an ID card built to <a href="ISO/IEC_7810" title="ISO/IEC 7810">ISO/IEC 7810</a>:2003 ID-1<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> standards. This card would constitute a physical representation of an individual's identity. WebUSB would then act as a middle man in facilitating the transfer of data stored on the hardware to a given web server. The number card would be digitally signed by an authorised party and would digitally connect to a server. This connection would require a device capable of reading <a href="ISO/IEC_14443" title="ISO/IEC 14443">ISO/IEC 14443</a> type B connections.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> In order to make this digital connection valid, WebUSB would serve as software connector.<sup id="cite_ref-Fujita-Inomata_13-3" class="reference"><a href="#cite_note-Fujita-Inomata-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Usage">Usage</h2></div>
<p>WebUSB will only work on supported browsers, for example <a href="Google_Chrome" title="Google Chrome">Chrome</a>. Due to privacy and security concerns it will also only work in a secure context i.e.; over <a href="HTTPS" title="HTTPS">HTTPS</a>, and can only be called through a user actions.
For instance in order to instantiate a connection <code>navigator.usb.requestDevice()</code> can only be called through user gesture, such as touch or mouse click.
Similarly protection from WebUSB can be provided using a feature policy. For instance <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" style="" dir="ltr">Feature-Policy: fullscreen "*"; usb "none"; payment "self" https://payment.example.com</code> would prevent WebUSB from running.<sup id="cite_ref-Beaufort_17-0" class="reference"><a href="#cite_note-Beaufort-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>
</p><p>To get access to devices visible to the browser two options are available. <code>navigator.usb.requestDevice()</code> will prompt the user to select which USB access is to be given, or <code>navigator.usb.getDevices()</code> will return a list of USB devices that the origin has access to.
</p><p>To better search for devices, WebUSB has a number of filtering options. These filters are passed into <code>navigator.usb.requestDevice()</code> as a JavaScript filtering object. These filters are; <code>vendorId</code>,<code>productId</code>,<code>classCode</code>, <code>protocolCode</code>, <code>serialNumber</code>, and <code>subclassCode</code>.
</p><p>For example, imagine connecting to an <a href="Arduino" title="Arduino">Arduino</a> device, this could be done in the following way. Where <style data-mw-deduplicate="TemplateStyles:r886049734">
/* start https://en.wikipedia.org/ */


.mw-parser-output .monospaced{font-family:monospace,monospace}


/* end https://en.wikipedia.org/ */
</style><span class="monospaced">0x2341</span> is Arduino in the list of USB ID's<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="nx">navigator</span><span class="p">.</span><span class="nx">usb</span><span class="p">.</span><span class="nx">requestDevice</span><span class="p">({</span><span class="w"> </span><span class="nx">filters</span><span class="o">:</span><span class="w"> </span><span class="p">[{</span><span class="w"> </span><span class="nx">vendorId</span><span class="o">:</span><span class="w"> </span><span class="mh">0x2341</span><span class="w"> </span><span class="p">}]</span><span class="w"> </span><span class="p">})</span>
<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="nx">device</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">device</span><span class="p">.</span><span class="nx">productName</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">device</span><span class="p">.</span><span class="nx">manufacturerName</span><span class="p">);</span><span class="w"> </span>
<span class="p">})</span>
<span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">error</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">error</span><span class="p">);</span><span class="w"> </span><span class="p">});</span>
</pre></div>
<p>The USB <code>device</code> descriptor returned from the above snippet will contain all important information about the device such as; version, packet size, configuration options etc.
</p><p>The alternative call to <code>navigator.usb.getDevices()</code> will instead look like this;
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span class="nx">navigator</span><span class="p">.</span><span class="nx">usb</span><span class="p">.</span><span class="nx">getDevices</span><span class="p">().</span><span class="nx">then</span><span class="p">(</span><span class="nx">devices</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nx">devices</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">device</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">device</span><span class="p">.</span><span class="nx">productName</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">device</span><span class="p">.</span><span class="nx">manufacturerName</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="p">});</span>
<span class="p">})</span>
</pre></div>
<p>In order to talk to the device there are a few important function calls to run through. <code>device.open()</code> will run through all the required steps of setting up the device, <code>device.selectConfiguration()</code> sets up the configuration, importantly how it is powered, and the number of interfaces. It is then important to claim the interface. This can be done through the <code>device.claimInterface</code> function call. This will simulate a real wired connection and ensure that this web page is the only one able to read and write to the device until the connection is released. Finally the call <code>device.controlTransferOut()</code> will set up the device to communicate through the WebUSB Serial API. Once the set up is all done, data can be transferred to the device using <code>device.transferIn()</code> to transfer bulk data to the device, similarly its sister function <code>device.transferOut()</code> to read data from the device.<sup id="cite_ref-Beaufort_17-1" class="reference"><a href="#cite_note-Beaufort-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-github-webusb_1-8" class="reference"><a href="#cite_note-github-webusb-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Interfaces">Interfaces</h3></div>
<p>In order to generalise interaction with hardware devices WebUSB supports a number of interfaces that abstract away the specific hardware functionality.<sup id="cite_ref-Moz-Web-API_8-2" class="reference"><a href="#cite_note-Moz-Web-API-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<table class="wikitable">
<caption>Interfaces
</caption>
<tbody><tr>
<th>Interface Name</th>
<th>Description
</th></tr>
<tr>
<td><span class="monospaced">USB</span></td>
<td>Provides attributes and methods for finding and connecting USB devices from a web page. This interface inherits from <code>EventTarget</code>.
</td></tr>
<tr>
<td><span class="monospaced">USBConnectionEvent</span></td>
<td>This connection event is passed to <code>USB.onconnect</code> or <code>USB.ondisconnect</code> when the agent detects a change in the connection status.
</td></tr>
<tr>
<td><span class="monospaced">USBDevice</span></td>
<td>Interface that provides metadata about the connected device and methods for controlling it. Importantly this is the main interface the developer will use for interacting with the device.
</td></tr>
<tr>
<td><span class="monospaced">USBInTransferResult</span></td>
<td>A representation of the results from a data transfer event from the device to the host. Including field for the data and the status of the transfer. There are three options for status fields; 'ok' meaning the transfer was a success, 'stall' indicating an error producing a stall on the endpoint, or 'babble' which indicates more than expected data was transferred.
</td></tr>
<tr>
<td><span class="monospaced">USBIsochronousInTransferResult</span></td>
<td>Similar to <code>USBInTransferResult</code> this is a representation of a data transfer from the device to the host when done across an isochronous endpoint. Has no status field, only the packets.
</td></tr>
<tr>
<td><span class="monospaced">USBIsochronousInTransferPacket</span></td>
<td>Represents the status of an individual packet from a request to transfer data from the device to the host over an isochronous endpoint. Can return the status of either 'ok' or 'stall'.
</td></tr>
<tr>
<td><span class="monospaced">USBIsochronousOutTransferResult</span></td>
<td>Similar to <code>USBInTransferResult</code> this is a representation of a data transfer from the host to the device when done across an isochronous endpoint.
</td></tr>
<tr>
<td><span class="monospaced">USBIsochronousOutTransferPacket</span></td>
<td>Represents the status of an individual packet from a request to transfer data from the host to the device over an isochronous endpoint. Same status fields as <code>USBIsochronousInTransferPacket</code>.
</td></tr>
<tr>
<td><span class="monospaced">USBConfiguration</span></td>
<td>Provides information about a particular configuration of a USB device . This includes information about device version, maximum packet size and supported interfaces.
</td></tr>
<tr>
<td><span class="monospaced">USBInterface</span></td>
<td>Provides information about an interface provided by the USB device. This includes information on whether it is claimed, as well as its communication protocol.
</td></tr>
<tr>
<td><span class="monospaced">USBAlternateInterface</span></td>
<td>Provides information about a particular configuration of an interface and the particular modes the device can operate in.
</td></tr>
<tr>
<td><span class="monospaced">USBEndPoint</span></td>
<td>The <code>USBEndPoint</code> is a unidirectional data stream either into or out of the device.
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-github-webusb-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-github-webusb_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-github-webusb_1-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-github-webusb_1-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-github-webusb_1-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-github-webusb_1-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-github-webusb_1-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-github-webusb_1-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-github-webusb_1-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-github-webusb_1-8"><sup><i><b>i</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFGrant2021" class="citation web cs1">Grant, R (2021-10-06). <a rel="nofollow" class="external text" href="https://wicg.github.io/webusb/">"WebUSB API"</a>. <i>WICG</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2022-01-07</span></span>.</cite></span>
</li>
<li id="cite_note-Google-webusb2016-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-Google-webusb2016_2-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developers.google.com/web/updates/2016/03/access-usb-devices-on-the-web">"Access USB Devices on the Web"</a>. <i><a href="Google_Developers" title="Google Developers">Google Developers</a></i>. 30 March 2016.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://caniuse.com/webusb">"WebUSB | Can I use... Support tables for HTML5, CSS3, etc"</a>. <i>caniuse.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-07-02</span></span>.</cite></span>
</li>
<li id="cite_note-Anderson-Universal-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-Anderson-Universal_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Anderson-Universal_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFAnderson2001" class="citation book cs1">Anderson, Don (2001). <i>Universal Serial Bus System Architecture</i> (2nd&nbsp;ed.). Addison-Wesley. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-201-30975-1</bdi>.</cite></span>
</li>
<li id="cite_note-CSSSConf-Aus-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-CSSSConf-Aus_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-CSSSConf-Aus_5-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFHinton2018" class="citation conference cs1">Hinton, Suz (2018-06-18). <a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=ov2R3vEn14k"><i>Suz Hinton - I'm afraid your browser has been talking to the robots again a gentle intro to WebUSB</i></a>. CSSSConf Australia.</cite></span>
</li>
<li id="cite_note-King-Saud-IoT-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-King-Saud-IoT_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-King-Saud-IoT_6-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFBeniwalSinghrova2022" class="citation journal cs1">Beniwal, Gunjan; Singhrova, Anita (2022). <a rel="nofollow" class="external text" href="https://doi.org/10.1016%2Fj.jksuci.2021.11.007">"A systematic literature review on IoT gateways"</a>. <i>Journal of King Saud University - Computer and Information Sciences</i>. <b>34</b> (10): <span class="nowrap">9541–</span>9563. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1016%2Fj.jksuci.2021.11.007">10.1016/j.jksuci.2021.11.007</a></span>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:244758915">244758915</a>.</cite></span>
</li>
<li id="cite_note-Rondon-Babun-7"><span class="mw-cite-backlink">^ <a href="#cite_ref-Rondon-Babun_7-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Rondon-Babun_7-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFRondonBabunArisAkkaya2021" class="citation journal cs1">Rondon, L; Babun, L; Aris, A; Akkaya, A; Uluagac, A (2021). <a rel="nofollow" class="external text" href="https://www.iso.org/standard/31432.html">"Survey on Enterprise Internet-of-Things systems (E-IoT): A security perspective"</a>. <i>ISO</i>. <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/2102.10695">2102.10695</a></span><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-12-19</span></span>.</cite></span>
</li>
<li id="cite_note-Moz-Web-API-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-Moz-Web-API_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Moz-Web-API_8-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Moz-Web-API_8-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/Web/API/WebUSB_API">"WebUSB API"</a>. <i>Mozilla Developer Blogs</i>. Mozilla. 2021<span class="reference-accessdate">. Retrieved <span class="nowrap">2021-12-19</span></span>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFTalukder2020" class="citation book cs1">Talukder, A.K (2020). <a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-3-030-66665-1_14">"The Next Generation Web: Technologies and Services"</a>. <i>Big Data Analytics</i>. Lecture Notes in Computer Science. Vol.&nbsp;12581. pp.&nbsp;<span class="nowrap">209–</span>229. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-3-030-66665-1_14">10.1007/978-3-030-66665-1_14</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-3-030-66664-4</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:230795240">230795240</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-12-19</span></span>.</cite></span>
</li>
<li id="cite_note-BIPES-IEEE-10"><span class="mw-cite-backlink">^ <a href="#cite_ref-BIPES-IEEE_10-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-BIPES-IEEE_10-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-BIPES-IEEE_10-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFJuniorGonçalvesDe_Paula_CaurinTamanaka2020" class="citation journal cs1">Junior, A. G. D. S.; Gonçalves, L. M. G.; De Paula Caurin, G. A.; Tamanaka, G.T.B; Hernandes, A.C; Aroca, R.V (2020). <a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FACCESS.2020.3035083">"BIPES: Block Based Integrated Platform for Embedded Systems"</a>. <i><a href="IEEE_Access" title="IEEE Access">IEEE Access</a></i>. <b>8</b>: <span class="nowrap">197955–</span>197968. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2020IEEEA...8s7955J">2020IEEEA...8s7955J</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FACCESS.2020.3035083">10.1109/ACCESS.2020.3035083</a></span>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:226854474">226854474</a>.</cite></span>
</li>
<li id="cite_note-Enabling_Smart-11"><span class="mw-cite-backlink">^ <a href="#cite_ref-Enabling_Smart_11-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Enabling_Smart_11-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFLindström2021" class="citation web cs1">Lindström, R (2021). <a rel="nofollow" class="external text" href="http://urn.kb.se/resolve">"Enabling Smartphones to act as IoT Edge Devices via the Browser-based 'WebUSB API'&nbsp;: The future of the browser and the smartphone in home electronics IoT systems"</a>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.xda-developers.com/google-disables-chrome-webusb/">"Google disables WebUSB in Chrome amidst phishing concerns"</a>. <a href="XDA_Developers" class="mw-redirect" title="XDA Developers">XDA Developers</a>. 7 March 2018.</cite></span>
</li>
<li id="cite_note-Fujita-Inomata-13"><span class="mw-cite-backlink">^ <a href="#cite_ref-Fujita-Inomata_13-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Fujita-Inomata_13-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Fujita-Inomata_13-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-Fujita-Inomata_13-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFFujitaInomataKashiwazaki2019" class="citation journal cs1">Fujita, Y; Inomata, A; Kashiwazaki, H (2019). "Implementation and Evaluation of a Multi-Factor Web Authentication System with Individual Number Card and WebUSB". <i>Asia-Pacific Network Operations and Management Symposium</i>.</cite></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite id="CITEREFBrian_Krebs2018" class="citation web cs1">Brian Krebs (2018-06-01). <a rel="nofollow" class="external text" href="https://krebsonsecurity.com/2018/08/reddit-breach-highlights-limits-of-sms-based-authentication/">"Reddit Breach Highlights Limits of SMS-Based Authentication"</a>. <i>krebs on Security</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-12-19</span></span>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.iso.org/standard/31432.html">"ISO/IEC 7810:2003 - Identification cards – Physical characteristics"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2022-01-07</span></span>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.iso.org/standard/73596.html">"ISO/IEC 14443-1:2018 - Cards and security devices for personal identification – Contactless proximity objects"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2022-01-07</span></span>.</cite></span>
</li>
<li id="cite_note-Beaufort-17"><span class="mw-cite-backlink">^ <a href="#cite_ref-Beaufort_17-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Beaufort_17-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFBeaufort2021" class="citation web cs1">Beaufort, Francis (2021-02-23). <a rel="nofollow" class="external text" href="https://web.dev/usb/">"Access WebUSB"</a>. <i>web.dev</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2022-01-06</span></span>.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.linux-usb.org/usb.ids">"Access WebUSB"</a>. <i>web.dev</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2022-01-06</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://wicg.github.io/webusb/">WebUSB API - Draft Community Group Report, 7 July 2020</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="USB376" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="USB376" style="font-size:114%;margin:0 4em"><a href="USB" title="USB">USB</a></div></th></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><span class="nowrap"><a href="USB_Implementers_Forum" title="USB Implementers Forum">USB Implementers Forum</a></span></li>
<li><span class="nowrap"><a href="USB_hardware" title="USB hardware">Hardware</a></span>
<ul><li><span class="nowrap"><a href="USB_hardware#Connectors" title="USB hardware">connectors</a></span></li>
<li><span class="nowrap"><a href="USB_hardware#Cabling" title="USB hardware">cabling</a></span></li>
<li><span class="nowrap"><a href="USB_hardware#Power" title="USB hardware">power</a></span></li></ul></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Versions</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="USB_1.0" class="mw-redirect" title="USB 1.0">1.0</a></li>
<li><a href="USB_1.1" class="mw-redirect" title="USB 1.1">1.1</a></li>
<li><a href="USB_2.0" class="mw-redirect" title="USB 2.0">2.0</a></li>
<li><a href="USB_3.0" title="USB 3.0">3.0</a></li>
<li><a href="USB-C" title="USB-C">USB-C</a></li>
<li><a href="USB4" title="USB4">USB4</a></li>
<li><a href="USB_On-The-Go" title="USB On-The-Go">USB On-The-Go</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="USB#Device_classes" title="USB">Device classes</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="USB_mass_storage_device_class" title="USB mass storage device class">Mass storage</a>
<ul><li><a href="USB_flash_drive" title="USB flash drive">Flash drive</a></li>
<li><a href="USB_FlashCard" class="mw-redirect" title="USB FlashCard">FlashCard</a></li></ul></li>
<li><a href="USB_Attached_SCSI" title="USB Attached SCSI">UASP</a>
<ul><li><a href="Solid-state_drive" title="Solid-state drive">SSD</a></li></ul></li>
<li><a href="USB_human_interface_device_class" title="USB human interface device class">Human interface</a></li>
<li><a href="USB_video_device_class" title="USB video device class">Video</a></li>
<li><a href="USB_communications_device_class" title="USB communications device class">Communications</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Security</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Juice_jacking" title="Juice jacking">Juice jacking</a></li>
<li><a href="BadUSB" title="BadUSB">BadUSB</a></li>
<li><a href="USB_flash_drive_security" title="USB flash drive security">USB flash drive security</a></li>
<li><a href="USB_killer" title="USB killer">USB killer</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Enhanced_mini-USB" title="Enhanced mini-USB">Enhanced mini-USB</a></li>
<li><a href="Ethernet_over_USB" title="Ethernet over USB">Ethernet over USB</a></li>
<li><a href="USB_decoration" title="USB decoration">Decoration</a></li>
<li><a href="USB_hub" title="USB hub">Hub</a></li>
<li><a href="USB-to-serial_adapter" title="USB-to-serial adapter">Serial adapter</a></li>
<li><a href="PoweredUSB" title="PoweredUSB">PoweredUSB</a></li>
</ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Web_interfaces26" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Web_interfaces26" style="font-size:114%;margin:0 4em"><a href="Web_API" title="Web API">Web interfaces</a></div></th></tr><tr><td colspan="2" class="navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><td class="navbox-abovebelow" colspan="2" style="font-weight:bold"><div id="Server-side154"><a href="Server-side" class="mw-redirect" title="Server-side">Server-side</a></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Communication_protocol" title="Communication protocol">Protocols</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="HTTP" title="HTTP">HTTP</a>
<ul><li><a href="HTTP/2" title="HTTP/2">v2</a></li>
<li><a href="HTTP/3" title="HTTP/3">v3</a></li>
<li><a href="HTTPS" title="HTTPS">Encryption</a></li>
<li><a href="WebDAV" title="WebDAV">WebDAV</a></li></ul></li>
<li><a href="Common_Gateway_Interface" title="Common Gateway Interface">CGI</a></li>
<li><a href="Simple_Common_Gateway_Interface" title="Simple Common Gateway Interface">SCGI</a></li>
<li><a href="FastCGI" title="FastCGI">FCGI</a></li>
<li><a href="Apache_JServ_Protocol" title="Apache JServ Protocol">AJP</a></li>
<li><a href="Web_Services_for_Remote_Portlets" title="Web Services for Remote Portlets">WSRP</a></li>
<li><a href="WebSocket" title="WebSocket">WebSocket</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Server_application_programming_interface" title="Server application programming interface">Server APIs</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Netscape_Server_Application_Programming_Interface" title="Netscape Server Application Programming Interface">C NSAPI</a></li>
<li><a href="Apache_HTTP_Server#Feature_overview" title="Apache HTTP Server">C ASAPI</a></li>
<li><a href="Internet_Server_Application_Programming_Interface" title="Internet Server Application Programming Interface">C ISAPI</a></li>
<li><a href="Active_Server_Pages" title="Active Server Pages">COM ASP</a></li>
<li><a href="Jakarta_Servlet" title="Jakarta Servlet">Jakarta Servlet</a>
<ul><li><a href="Web_container" title="Web container">container</a></li></ul></li>
<li><a href="Open_Web_Interface_for_.NET" title="Open Web Interface for .NET">CLI OWIN</a></li>
<li><a href="HTTP_handler" title="HTTP handler">ASP.NET Handler</a></li>
<li><a href="Web_Server_Gateway_Interface" title="Web Server Gateway Interface">Python WSGI</a></li>
<li><a href="Asynchronous_Server_Gateway_Interface" title="Asynchronous Server Gateway Interface">Python ASGI</a></li>
<li><a href="Rack_(web_server_interface)" title="Rack (web server interface)">Ruby Rack</a></li>
<li><a href="JSGI" title="JSGI">JavaScript JSGI</a></li>
<li><a href="Plack_(software)#PSGI" title="Plack (software)">Perl PSGI</a></li>
<li><a href="Java_Portlet_Specification" title="Java Portlet Specification">Portlet</a>
<ul><li><a href="Java_Portlet_Specification" title="Java Portlet Specification">container</a></li></ul></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="List_of_Apache_modules" title="List of Apache modules">Apache modules</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Server_Side_Includes" title="Server Side Includes">mod_include</a></li>
<li><a href="Mod_jk" class="mw-redirect" title="Mod jk">mod_jk</a></li>
<li><a href="Mod_lisp" title="Mod lisp">mod_lisp</a></li>
<li><a href="Mod_mono" title="Mod mono">mod_mono</a></li>
<li><a href="Mod_parrot" class="mw-redirect" title="Mod parrot">mod_parrot</a></li>
<li><a href="Mod_perl" title="Mod perl">mod_perl</a></li>
<li><a href="PHP" title="PHP">mod_php</a></li>
<li><a href="Mod_proxy" title="Mod proxy">mod_proxy</a></li>
<li><a href="Mod_python" title="Mod python">mod_python</a></li>
<li><a href="Mod_wsgi" title="Mod wsgi">mod_wsgi</a></li>
<li><a href="Mod_ruby" title="Mod ruby">mod_ruby</a></li>
<li><a href="Phusion_Passenger" title="Phusion Passenger">Phusion Passenger</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Topics</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Web_service" title="Web service">Web service</a> vs. <a href="Web_resource" title="Web resource">Web resource</a></li>
<li><a href="Web-oriented_architecture" title="Web-oriented architecture">WOA</a> vs. <a href="Resource-oriented_architecture" title="Resource-oriented architecture">ROA</a></li>
<li><a href="Open_API" title="Open API">Open API</a></li>
<li><a href="Webhook" title="Webhook">Webhook</a></li>
<li><a href="Application_server" title="Application server">Application server</a>
<ul><li><a href="List_of_application_servers" title="List of application servers">comparison</a></li></ul></li>
<li><a href="Server-side_scripting" title="Server-side scripting">Scripting</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><td class="navbox-abovebelow" colspan="2" style="font-weight:bold"><div id="Client-side89"><a href="Client-side" class="mw-redirect" title="Client-side">Client-side</a></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Plug-in_(computing)" title="Plug-in (computing)">Browser APIs</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="NPAPI" title="NPAPI">C NPAPI</a>
<ul><li><a href="NPAPI#LiveConnect" title="NPAPI">LiveConnect</a></li>
<li><a href="NPAPI#XPConnect" title="NPAPI">XPConnect</a></li></ul></li>
<li><a href="NPAPI#NPRuntime" title="NPAPI">C NPRuntime</a></li>
<li><a href="Google_Native_Client#Pepper" title="Google Native Client">C PPAPI</a>
<ul><li><a href="Google_Native_Client" title="Google Native Client">NaCl</a></li></ul></li>
<li><a href="ActiveX" title="ActiveX">ActiveX</a></li>
<li><a href="Browser_Helper_Object" title="Browser Helper Object">BHO</a></li>
<li><a href="XAML_Browser_Applications" title="XAML Browser Applications">XBAP</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Web_API#Client_side" title="Web API">Web APIs</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="WHATWG" title="WHATWG">WHATWG</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="HTML_audio" title="HTML audio">Audio</a></li>
<li><a href="Canvas_element" title="Canvas element">Canvas</a></li>
<li><a href="Document_Object_Model" title="Document Object Model">DOM</a></li>
<li><a href="Server-sent_events" title="Server-sent events">SSE</a></li>
<li><a href="HTML_video" title="HTML video">Video</a></li>
<li><a href="WebSocket" title="WebSocket">WebSockets</a></li>
<li><a href="Web_Messaging" title="Web Messaging">Web messaging</a></li>
<li><a href="Web_storage" title="Web storage">Web storage</a></li>
<li><a href="Web_worker" title="Web worker">Web worker</a></li>
<li><a href="XMLHttpRequest" title="XMLHttpRequest">XMLHttpRequest</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="World_Wide_Web_Consortium" title="World Wide Web Consortium">W3C</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="DOM_event" title="DOM event">DOM events</a></li>
<li><a href="Encrypted_Media_Extensions" title="Encrypted Media Extensions">EME</a></li>
<li><a href="HTML5_File_API" title="HTML5 File API">File</a></li>
<li><a href="W3C_Geolocation_API" title="W3C Geolocation API">Geolocation</a></li>
<li><a href="Indexed_Database_API" title="Indexed Database API">IndexedDB</a></li>
<li><a href="Media_Source_Extensions" title="Media Source Extensions">MSE</a></li>
<li><a href="SVG" title="SVG">SVG</a></li>
<li><a href="WebAssembly" title="WebAssembly">WebAssembly</a></li>
<li><a href="WebAuthn" title="WebAuthn">WebAuthn</a></li>
<li><a href="WebGPU" title="WebGPU">WebGPU</a></li>
<li><a href="WebRTC" title="WebRTC">WebRTC</a></li>
<li><a href="WebXR" title="WebXR">WebXR</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Khronos_Group" title="Khronos Group">Khronos</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="WebCL" title="WebCL">WebCL</a></li>
<li><a href="WebGL" title="WebGL">WebGL</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Others</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Gears_(software)" title="Gears (software)">Gears</a></li>
<li><a href="Web_SQL_Database" title="Web SQL Database">Web SQL Database</a> (formerly W3C)</li>
</ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Topics</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Ajax_(programming)" title="Ajax (programming)">Ajax</a> and <a href="Remote_scripting" title="Remote scripting">Remote scripting</a> vs. <a href="Dynamic_HTML" title="Dynamic HTML">DHTML</a></li>
<li><a href="Browser_extension" title="Browser extension">Browser extension</a></li>
<li><a href="Cross-site_scripting" title="Cross-site scripting">Cross-site scripting</a> and <a href="Cross-origin_resource_sharing" title="Cross-origin resource sharing">CORS</a></li>
<li><a href="Hydration_(web_development)" title="Hydration (web development)">Hydration</a></li>
<li><a href="Mashup_(web_application_hybrid)" title="Mashup (web application hybrid)">Mashup</a></li>
<li><a href="Client-side_persistent_data" title="Client-side persistent data">Persistent data</a></li>
<li><a href="Web_IDL" title="Web IDL">Web IDL</a></li>
<li><a href="Dynamic_web_page#Client-side_scripting" title="Dynamic web page">Scripting</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><td class="navbox-abovebelow" colspan="2"><div id="Related_topics14">Related topics</div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Frontend_and_backend" title="Frontend and backend">Frontend and backend</a></li>
<li><a href="Microservices" title="Microservices">Microservices</a>
<ul><li><a href="REST" title="REST">REST</a></li>
<li><a href="GraphQL" title="GraphQL">GraphQL</a></li></ul></li>
<li><a href="Push_technology" title="Push technology">Push technology</a></li>
<li><a href="Solution_stack" title="Solution stack">Solution stack</a></li>
<li><a href="Web_page" title="Web page">Web page</a>
<ul><li><a href="Static_web_page" title="Static web page">Static</a></li>
<li><a href="Dynamic_web_page" title="Dynamic web page">Dynamic</a></li></ul></li>
<li><a href="Web_standards" title="Web standards">Web standards</a></li>
<li><a href="Web_API_security" title="Web API security">Web API security</a></li>
<li><a href="Web_application" title="Web application">Web application</a>
<ul><li><a href="Rich_Internet_Application" title="Rich Internet Application">Rich</a></li>
<li><a href="Single-page_application" title="Single-page application">Single-page</a></li>
<li><a href="Progressive_web_app" title="Progressive web app">Progressive</a></li></ul></li>
<li><a href="Web_framework" title="Web framework">Web framework</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-11" href="https://en.wikipedia.org/wiki/?title=WebUSB&amp;oldid=1289921287">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>